# -*- encoding: utf-8 -*-
"""

PyCharm 最原始的函数装饰器
2024年10月21日12时49分
by wenyang

"""
# 闭包函数的作用就是提高变量的声明周期 就是在函数内部定义函数 并且返回函数的引用
def outer() -> callable:
    """
    通过使用闭包函数可以实现在函数内部定义函数
    :return:
    """
    data = []
    # 只要inner函数还在引用data变量 那么data变量就不会被销毁 只要inner还在 那么data就是不会消失
    def inner(value) -> list:
        data.append(value)
        return data
    data = [0]
    return inner

def main():
    # 一般来说 函数在执行完毕之后 里面的变量就是会别销毁的 但是通过闭包函数就是可以是实现提高变量的声明周期
    foo = outer()
    bar = foo("hello world")
    print(foo.__closure__)
    print(bar)
    bar = foo("javascript")
    print(foo.__closure__)
    print(bar)



if __name__ == "__main__":
    main()
